//
//  HMTabBar.swift
//  WeiBo
//
//  Created by apple on 16/6/23.
//  Copyright © 2016年 itheima. All rights reserved.
//

import UIKit

class HMTabBar: UITabBar {

    // 1. 定义一个闭包
    var closure: (()->())?
    
    // 添加子控件 init
    // 重写父类的 方法
    // init(frame:) -- 这个方法是 UIView的指定构造方法
    
    override init(frame: CGRect) {
        
        super.init(frame: frame)
        
        // 添加按钮
        addSubview(composeButton)
    }

    // 加载storyboard的时候调用,系统会提示你,如果从storyboard加载的话,会有一个崩溃提示
    //
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
        
//        super.init(coder: aDecoder)
//        
//        addSubview(composeButton)
    }
    
    
    override func layoutSubviews() {
        super.layoutSubviews()
        
//        print(subviews)
        
        // 定义一个索引,用于记录 子控件的x
        var index: Int = 0
        
        // 设置item的宽高
        let width = bounds.width / 5
        let height = bounds.height
        
        // 通过遍历来拿到每一个view
        for subview in subviews{
            
//            print(subview)
            
            // UITabBarButton -- 是系统的私有类,不对外公开
            // isKindOfClass 用于判断 是不是 这个类
            // UITabBarButton 怎么和 AnyClass 对应起来
            // NSClassFromString("UITabBarButton")! 为什么要强制解包?
            //
            if subview.isKindOfClass(NSClassFromString("UITabBarButton")!){
                
                print("UITabBarItem")
                // 修改frame 就希望
                subview.frame = CGRectMake(CGFloat(index) * width, 0, width, height)
                // 索引自动加1
                index++
                
                if index == 2 {index++}
            }
            
            
        }
        
        // 设置button的位置
        composeButton.frame = CGRectMake(2 * width, 0, width, height)
    }

    // 注意: 我把方法定义成私有的,在运行时的过程中,类找不到,需要用一个关键词 @objc
    
    @objc private  func click(button: UIButton){
        
        printLog("你点击了我")
        //2 能不能在这里进行 视图的Model
        closure?()
        
    }
    
    //MARK:--懒加载
    // 一般情况下,建议同学们指定控件的类型
    // 建议同学们上来就直接定义成私有的
   private lazy var composeButton: UIButton = {
    
        // 随着大家写的多,慢慢就记住 那个类型可以省略
        let button = UIButton(type: UIButtonType.Custom)
        
        // 设置属性
        button.setBackgroundImage(UIImage(named: "tabbar_compose_button"), forState: UIControlState.Normal)
        button.setBackgroundImage(UIImage(named: "tabbar_compose_button_highlighted"), forState: .Highlighted)
        
        button.setImage(UIImage(named: "tabbar_compose_icon_add"), forState: .Normal)
        button.setImage(UIImage(named: "tabbar_compose_icon_add_highlighted"), forState: .Highlighted)
        
        
        // 添加点击事件
        button.addTarget(self, action: "click:", forControlEvents: .TouchUpInside)
        
        return button
    }()
}
